package com.pactera.miyuangroup.task;

import com.pactera.miyuangroup.service.*;
import com.pactera.miyuangroup.util.Date;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务
 *
 * @author Wangwu
 * @create 2018-05-22 下午2:57
 **/
@Component
@Slf4j
public class Scheduler {

    @Autowired
    private GoodsClassificationService goodsClassificationService;
    @Autowired
    private GoodsInfoService goodsInfoService;
    @Autowired
    private LoginUserService loginUserService;
    @Autowired
    private OrganizationStructureService organizationStructureService;
    @Autowired
    private VehicleInfoService vehicleInfoService;
    @Autowired
    private VendorInfoService vendorInfoService;
    @Autowired
    private VendorPassagewayService vendorPassagewayService;

    /**
     * 商品分类定时任务
     */
    @Scheduled(cron = "0 0 0 1/1 * ?") //每天执行一次
    public void CommodityClassification() {
        log.info("定时任务-商品分类，开始执行，时间（{}）",new Date().toLongDate());
        goodsClassificationService.syncMiyuanGoodsClassificationInfo();
        log.info("定时任务-商品分类，执行结束，时间（{}）",new Date().toLongDate());
    }

    /**
     * 用户定时任务
     */
    @Scheduled(cron = "0 0 0 1/1 * ?") //每天凌晨12点执行一次
    public void UserInfo() {
        log.info("定时任务-用户信息，开始执行，时间（{}）",new Date().toLongDate());
        loginUserService.syncMiyuanUserSchedulerInfo();
        log.info("定时任务-用户信息，执行结束，时间（{}）",new Date().toLongDate());
    }

    /**
     * 机构定时任务
     */
    @Scheduled(cron = "0 10 0 1/1 * ?") //每天凌晨12点10分执行一次
    public void OrgInfo() {
        log.info("定时任务-机构信息，开始执行，时间（{}）",new Date().toLongDate());
        organizationStructureService.syncMiyuanOrgInfo();
        log.info("定时任务-机构信息，执行结束，时间（{}）",new Date().toLongDate());
    }


    /**
     * 商品定时任务
     */
    @Scheduled(cron = "0 20 0 1/1 * ?") //每天凌晨12点20分执行一次
    public void GoodsInfo() {
        log.info("定时任务-商品信息，开始执行，时间（{}）",new Date().toLongDate());
        goodsInfoService.syncMiyuanGoodsInfo();
        log.info("定时任务-商品信息，执行结束，时间（{}）",new Date().toLongDate());
    }

    /**
     * 车辆定时任务
     */
    @Scheduled(cron = "0 30 0 1/1 * ?") //每天凌晨12点50执行一次
    public void VehicleInfo() {
        log.info("定时任务-车辆信息，开始执行，时间（{}）",new Date().toLongDate());
        vehicleInfoService.syncMiyuanVehicleSchedulerInfo();
        log.info("定时任务-车辆信息，执行结束，时间（{}）",new Date().toLongDate());
    }

    /**
     * 售货机定时任务
     */
    @Scheduled(cron = "0 50 1 1/1 * ?") //每天凌晨1点30执行一次
    public void VendorInfo() {
        log.info("定时任务-售货机信息，开始执行，时间（{}）",new Date().toLongDate());
        vendorInfoService.syncMiyuanVenderInfo();
        log.info("定时任务-售货机信息，执行结束，时间（{}）",new Date().toLongDate());
    }

    /**
     * 售货机货道定时任务
     */
    @Scheduled(cron = "0 30 2 1/1 * ?") //每天凌晨2点30执行一次
    public void VendorPassagewayInfo() {
        log.info("定时任务-售货机货道信息，开始执行，时间（{}）",new Date().toLongDate());
        vendorPassagewayService.syncMiyuanVendorPassagewaySchedulerInfo();
        log.info("定时任务-售货机货道信息，执行结束，时间（{}）",new Date().toLongDate());
    }
}
